There has been explosive growth in Internet traffic due to the increased number of Internet users, various service demands from those users, the implementation of new services, such as voice-over-IP (VoIP) or streaming applications, and the development of mobile Internet. Conventional routers, which act as relaying nodes connected to subnetworks or other routers, have accomplished their roles well, in situations in which the time required to process packets, determine their destinations, and forward the packets to the destinations is usually smaller than the transmission time on network paths. More recently, however, the packet transmission capabilities of high-bandwidth network paths and the increases in Internet traffic have combined to outpace the processing capacities of conventional routers. Thus, routers are increasingly blamed for major bottlenecks in the Internet.
Early routers were implemented on a computer host so that the CPU of the host performed all tasks, such as packet forwarding via a shared bus and routing table computation. This plain architecture proved to be inefficient, due to the concentrated overhead of the CPU and the existence of congestion on the bus. As a result, router vendors developed distributed router architectures that provide efficient packet processing compared to a centralized architecture. In distributed router architectures, many of the functions previously performed by the centralized CPU are distributed to the line cards and a high-speed crossbar switch replaces the shared bus.
When a data packet arrived in the router, a forwarding engine uses the forwarding tables to determine the destination of the data packet. A conventional IP router uses a dedicated forwarding table for each type of traffic (i.e., IPv4, IPv6, MPLS, and the like). However, using a dedicated forwarding table means that a conventional router must manage multiple forwarding tables and requires greater amounts of memory to hold the multiple forwarding tables. As a result, the cost of a conventional router increases due to the additional hardware.
Additionally, a router typically has forwarding engines for each type of traffic. If a single forwarding engine is used, then multiple processes must be used—one process for each traffic type, thus limiting the amount of traffic that can be handled. To avoid this, a conventional router uses multiple forwarding engines (or processes) for each type of traffic. Thus, additionally complexity is added in order to route traffic to the correct forwarding engine.
Furthermore, the prior art methods require more table space, because multiple tables must be constructed—one for each traffic type. Typically, these tables are sparsely occupied, so savings can be achieved by folding them into one table. Although the space for the actual forwarding entry is dynamically allocated, the table search constructs must be replicated for each traffic type. The table search constructs, although smaller per entry than the forwarding table entries, are stored in fast memory, which is expensive. Parts of these tables are statically allocated, rather than dynamically allocated, resulting in replication of some fairly large tables. Additionally, the prior art methods that use separate forwarding engines for each traffic type do not automatically adjust for varying traffic mixes.
Therefore, there is a need in the art for an improved Internet protocol (IP) router. In particular, there is a need for a massively parallel, distributed architecture router that does not require a dedicated forwarding table for each type of Internet Protocol (IP) data traffic. More particularly, there is a need for a router that does not use multiple forwarding engines for multiple IP data traffic types.